package com.spring.demo2.eg3;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.stereotype.Component;

/**
 * @author vhans
 */
@Component
public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
        // 在postProcessBeanFactory 方法中，强烈禁止去通过容器获取其他bean，此时会导致bean的提前初始化，会出现一些意想不到的问题，
        // 因为这个阶段中 BeanPostProcessor 还未准备好。
        // 对于这里来说， @Autowired也是在 BeanPostProcessor 的子类中处理的，此时如果去获取bean，此时bean不会被BeanPostProcessor 处理
        configurableListableBeanFactory.getBean("user1");
    }
}
